def main():
    """
    主模块：接收用户输入，验证合法性，并协调其他模块处理字符串
    """
    while True:
        # 接收用户输入
        user_input = input("请输入一个字符串(长度在0-255之间): ")

        # 验证输入长度
        if len(user_input) == 0:
            print("输入不能为空，请重新输入。")
            continue
        if len(user_input) > 255:
            print("输入长度超过255，请重新输入。")
            continue

        # 处理字符串
        english_only = filter_letters(user_input)
        print("仅保留英文后的结果:", english_only)

        reversed_str = reverse_string(english_only)
        print("反转后的结果:", reversed_str)

        encrypted_str = caesar_cipher(reversed_str, shift=3)  # 使用3作为凯撒密码的位移

        # 输出最终加密结果
        print("凯撒密码加密后的结果:", encrypted_str)
        break


def filter_letters(input_str):
    """
    letter模块：过滤掉非英文字符
    """
    result = []
    for char in input_str:
        if char.isalpha():
            result.append(char)
    return ''.join(result)


def reverse_string(input_str):
    """
    reverse模块：反转字符串
    """
    reversed_chars = []
    # 使用循环从后向前遍历字符串
    for i in range(len(input_str) - 1, -1, -1):
        reversed_chars.append(input_str[i])
    return ''.join(reversed_chars)


def caesar_cipher(text, shift=3):
    """
    enCode模块：凯撒密码加密
    """
    result = []
    for char in text:
        if char.isupper():
            # 处理大写字母
            shifted = ord(char) - ord('A')
            shifted = (shifted + shift) % 26
            result.append(chr(shifted + ord('A')))
        elif char.islower():
            # 处理小写字母
            shifted = ord(char) - ord('a')
            shifted = (shifted + shift) % 26
            result.append(chr(shifted + ord('a')))
        else:
            # 非字母字符(虽然理论上不会出现，因为前面已经过滤)
            result.append(char)
    return ''.join(result)


if __name__ == "__main__":
    main()